package com.prp.gwt.client.admin;

import java.util.List;
import java.util.Map;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.prp.gwt.client.ClientException;
import com.prp.gwt.client.vo.CommunityList;
import com.prp.gwt.client.vo.SubjectCategoryList;
import com.prp.gwt.client.vo.User;
import com.prp.gwt.client.vo.UserList;

public interface AdminServiceAsync {
	public void getUser(AsyncCallback<User> callback);
	public void getAdminList(AsyncCallback<UserList> callback);
	public void getRootList(AsyncCallback<UserList> callback);
	public void getCommunityList(AsyncCallback<CommunityList> callback);
	public void removeAdmin(String email, AsyncCallback<Boolean> callback);
	public void removeRoot(String email, AsyncCallback<Boolean> callback);
	public void addAdmin(String email, AsyncCallback<Boolean> callback);
	public void addRoot(String email, AsyncCallback<Boolean> callback);
	public void divideCommunity(AsyncCallback<Void> callback);
	public void isDivideRunning(AsyncCallback<Boolean> callback);
	public void getEmailSuggest(String query, AsyncCallback<List<String>> callback);
	public void getNameSuggest(String query, AsyncCallback<List<String>> callback);
	public void getCommunityMemeber(int communityId, AsyncCallback<UserList> callback);
	public void getInactivatedUserList(AsyncCallback<UserList> callback);
	public void activateUser(String email, AsyncCallback<Boolean> callback);
	public void deleteUser(String email, AsyncCallback<Boolean> callback);
	public void searchByEmail(String email, AsyncCallback<User> callback);
	public void searchByName(String query, AsyncCallback<UserList> callback);
	public void register(User user, String password, String host, AsyncCallback<Map<Integer, String>> callback);
	public void updateUserInfo(User user, AsyncCallback<Void> callback);
	public void signOut(AsyncCallback<Void> callback);
	public void verify(AsyncCallback<Boolean> callback);
	public void getSubjectCategoryList(AsyncCallback<SubjectCategoryList> callback);
}
